; ; ROI -- (c) Copyright 1990 Chris Butler ; set all off goto top all: set all on top: video 1 color 1 clearscr color 15 1 set all_savings 0 set tot_sav_1 0 set tot_sav_2 0 set tot_sav_3 0 set inv_value 0 set inv_sav_1 0 set inv_sav_2 0 set inv_sav_3 0 set purch_value 0 set purch_sav_1 0 set purch_sav_2 0 set purch_sav_3 0 set labor_value 0 set labor_sav_1 0 set labor_sav_2 0 set labor_sav_3 0 set down_hrs 0 set prod_cost 0 set down_cost 0 set prodn_sav_1 0 set prodn_sav_2 0 set prodn_sav_3 0 set equip_value 0 set equip_sav_1 0 set equip_sav_2 0 set equip_sav_3 0 ; INITIAL PAINT SCREEN ; HEADER AREA databegin line1 text 0,24 chr(201) mark 33 text chr(205) loop text " MAXIMO ROI " mark 33 text chr(205) loop text 79,24 chr(187) text 0,23 chr(186)$@$chr(186) text 0,22 chr(186)$@$chr(186) text 0,21 chr(200) mark 78 text chr(205) loop text chr(188) ; WORKSHEET AREA databegin title_row text 0,20 chr(201)$@$chr(187) text 0,19 chr(186)$@$chr(186) text 0,18 chr(204)$@$chr(185) databegin inv text 0,17 chr(186)$@$chr(186) text 0,16 chr(199)$@$chr(182) databegin purch text 0,15 chr(186)$@$chr(186) text 0,14 chr(199)$@$chr(182) databegin labor text 0,13 chr(186)$@$chr(186) text 0,12 chr(199)$@$chr(182) databegin prodn text 0,11 chr(186)$@$chr(186) text 0,10 chr(186)$@$chr(186) text 0,9 chr(186)$@$chr(186) text 0,8 chr(199)$@$chr(182) databegin equip text 0,7 chr(186)$@$chr(186) text 0,6 chr(199)$@$chr(182) text 0,5 chr(186)$@$chr(186) text 0,4 chr(200)$@$chr(188) databegin cmds color 15 7 text 1,0 @ text 36,0 chr(25) WHEN F10 GOTO CLOCK ; GET INV VALUES getinv: color 15 ; start w/inv sect hilited rect 25,17 33,17 color 1 15 text 34-len(@inv_value),17 @inv_value color 1 7 databegin invhlp text 1,3 @ text 1,2 @ text 1,1 @ color 1 15 set var3 right(@inv_value,1) intin 25,17 @var3 if @0==skip inv_skip if @0==up inv_skip set inv_value @0 inv_skip: set inv_sav_1 (@inv_value/100)*3 set inv_sav_2 (@inv_value/100)*5 set inv_sav_3 (@inv_value/100)*7 color 1 rect 25,17 33,17 rect 39,17 48,17 rect 54,17 63,17 rect 69,17 78,17 color 15 1 text 34-len(@inv_value),17 @inv_value text 48-len(@inv_sav_1),17 @inv_sav_1 text 63-len(@inv_sav_2),17 @inv_sav_2 text 78-len(@inv_sav_3),17 @inv_sav_3 sum_savings if @0==up getequip ; GET PURCH VALUES getpurch: color 15 rect 25,15 33,15 color 1 15 text 34-len(@purch_value),15 @purch_value color 15 1 text 48-len(@purch_sav_1),15 @purch_sav_1 text 63-len(@purch_sav_2),15 @purch_sav_2 text 78-len(@purch_sav_3),15 @purch_sav_3 color 1 7 databegin purchhlp text 1,3 @ text 1,2 @ text 1,1 @ color 1 15 set var3 right(@purch_value,1) intin 25,15 @var3 if @0==skip purch_skip if @0==up purch_skip set purch_value @0 purch_skip: set purch_sav_1 (@purch_value/100)*5 set purch_sav_2 (@purch_value/100)*10 set purch_sav_3 (@purch_value/100)*15 sum_savings color 1 rect 25,15 33,15 rect 39,15 48,15 rect 54,15 63,15 rect 69,15 78,15 color 15 1 text 34-len(@purch_value),15 @purch_value text 48-len(@purch_sav_1),15 @purch_sav_1 text 63-len(@purch_sav_2),15 @purch_sav_2 text 78-len(@purch_sav_3),15 @purch_sav_3 if @0==up getinv ; GET LABOR VALUE getlabor: color 15 rect 25,13 33,13 color 1 15 text 34-len(@labor_value),13 @labor_value color 15 1 text 48-len(@labor_sav_1),13 @labor_sav_1 text 63-len(@labor_sav_2),13 @labor_sav_2 text 78-len(@labor_sav_3),13 @labor_sav_3 color 1 7 databegin laborhlp text 1,3 @ text 1,2 @ text 1,1 @ color 1 15 set var3 right(@labor_value,1) intin 25,13 @var3 if @0==skip labor_skip if @0==up labor_skip set labor_value @0 labor_skip: set labor_sav_1 (@labor_value/100)*5 set labor_sav_2 (@labor_value/100)*10 set labor_sav_3 (@labor_value/100)*20 sum_savings color 1 rect 25,13 33,13 rect 39,13 48,13 rect 54,13 63,13 rect 69,13 78,13 color 15 1 text 34-len(@labor_value),13 @labor_value text 48-len(@labor_sav_1),13 @labor_sav_1 text 63-len(@labor_sav_2),13 @labor_sav_2 text 78-len(@labor_sav_3),13 @labor_sav_3 if @0==up getpurch ; GET PRODN NUMBERS getprodn: color 15 rect 25,11 33,11 color 1 15 text 34-len(@down_hrs),11 @down_hrs color 1 7 databegin prodnhlp text 1,3 @ text 1,2 @ text 1,1 @ color 1 15 set var3 right(@down_hrs,1) intin 25,11 @var3 if @0==skip hrs_skip if @0==up hrs_skip set down_hrs @0 hrs_skip: set down_cost @prod_cost*@down_hrs set prodn_sav_1 (@down_cost*3)/100 set prodn_sav_2 (@down_cost*5)/100 set prodn_sav_3 (@down_cost*10)/100 color 1 rect 25,11 33,11 rect 25,9 33,9 rect 39,9 48,9 rect 54,9 63,9 rect 69,9 78,9 color 15 1 text 34-len(@down_hrs),11 @down_hrs text 34-len(@down_cost),9 @down_cost text 48-len(@prodn_sav_1),9 @prodn_sav_1 text 63-len(@prodn_sav_2),9 @prodn_sav_2 text 78-len(@prodn_sav_3),9 @prodn_sav_3 sum_savings if @0==up getlabor getcost: color 15 rect 25,10 33,10 color 1 15 text 34-len(@prod_cost),10 @prod_cost set var3 right(@prod_cost,1) intin 25,10 @var3 if @0==skip cost_skip if @0==up cost_skip set prod_cost @0 cost_skip: set down_cost @prod_cost*@down_hrs set prodn_sav_1 (@down_cost*3)/100 set prodn_sav_2 (@down_cost*5)/100 set prodn_sav_3 (@down_cost*10)/100 color 1 rect 25,10 33,10 rect 25,9 33,9 rect 39,9 48,9 rect 54,9 63,9 rect 69,9 78,9 color 15 1 text 34-len(@prod_cost),10 @prod_cost text 34-len(@down_cost),9 @down_cost text 48-len(@prodn_sav_1),9 @prodn_sav_1 text 63-len(@prodn_sav_2),9 @prodn_sav_2 text 78-len(@prodn_sav_3),9 @prodn_sav_3 sum_savings if @0==up getprodn ; GET EQUIP VALUE getequip: color 15 rect 25,7 33,7 color 1 15 text 34-len(@equip_value),7 @equip_value color 15 1 text 48-len(@equip_sav_1),7 @equip_sav_1 text 63-len(@equip_sav_2),7 @equip_sav_2 text 78-len(@equip_sav_3),7 @equip_sav_3 color 1 7 databegin equiphlp text 1,3 @ text 1,2 @ text 1,1 @ color 1 15 set var3 right(@equip_value,1) intin 25,7 @var3 if @0==skip equip_skip if @0==up equip_skip set equip_value @0 equip_skip: set equip_sav_1 (@equip_value/100) set equip_sav_2 (@equip_value/100)*2 set equip_sav_3 (@equip_value/100)*5 sum_savings color 1 rect 25,7 33,7 rect 39,7 48,7 rect 54,7 63,7 rect 69,7 78,7 color 15 1 text 34-len(@equip_value),7 @equip_value text 48-len(@equip_sav_1),7 @equip_sav_1 text 63-len(@equip_sav_2),7 @equip_sav_2 text 78-len(@equip_sav_3),7 @equip_sav_3 if @0==up getcost goto getinv ; SUBR SUM_SAVINGS -- add all savings ; sum_savings: set tot_sav_1 @inv_sav_1+@purch_sav_1+@labor_sav_1 set tot_sav_1 @tot_sav_1+@prodn_sav_1+@equip_sav_1 set tot_sav_2 @inv_sav_2+@purch_sav_2+@labor_sav_2 set tot_sav_2 @tot_sav_2+@prodn_sav_2+@equip_sav_2 set tot_sav_3 @inv_sav_3+@purch_sav_3+@labor_sav_3 set tot_sav_3 @tot_sav_3+@prodn_sav_3+@equip_sav_3 color 1 rect 39,5 48,5 rect 54,5 63,5 rect 69,5 78,5 color 15 1 text 48-len(@tot_sav_1),5 @tot_sav_1 text 63-len(@tot_sav_2),5 @tot_sav_2 text 78-len(@tot_sav_3),5 @tot_sav_3 return ; SUBR SUM_SAVINGS ------------------------------------------------- ; SUBR INTIN -- gets an integer from kbrd ; @1 = x ; @2 = y ; @3 = blink bgrnd (for flashing) intin: set x @1 set y @2 local newint "" local newchar 0 set blinkchar @3 set firsttime true int_top: text @x+8,@y chr(177) waitkey 25 inv_loop_2 text @x+8,@y @blinkchar ; blank out the first spot goto inv_loop_3 inv_loop_2: text @x+8,@y @blinkchar waitkey 25 int_top inv_loop_3: getkey newchar if asc(@newchar)asc("9") not_numb set newint @newint$@newchar goto next_char waitkey ; after 0true lv_int_2 return "skip" ; just = DOWN lv_int_2: note 500 20 10 if len(@newint)==0 set newint 0 ; backsp whole entry endif return @newint ; END SUBR INTIN --------------------------------- line1: " Use this worksheet to see how much money MAXIMO Series 3 can save you. Note " " that savings increase over time as you gain experience with MAXIMO and CMMS. " dataend title_row: "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍ" " SAVINGS CATEGORY ³ VALUE ³ YR 1 SAVINGS ³ YR 2 SAVINGS ³ YR 3 SAVINGS " "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍ" ;012345678901234567890123456789012345678901234567890123456789012345678901234567 inv: "1. Spares Inventory ³ ³ 3% ³ 5% ³ 7% " "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" purch: "2. Maint. Purchases ³ ³ 5% ³ 10% ³ 15% " "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" labor: "3. Overtime Labor ³ ³ 5% ³ 10% ³ 20% " "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" prodn: "4. Downtime (hrs/yr) ³ ³ ³ ³ " " cost/lost hour ³ ³ ³ ³ " " downtime cost/yr ³ ³ 3% ³ 5% ³ 10% " "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" equip: "5. Prod. Asset Value ³ ³ 1% ³ 2% ³ 5% " "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍ" "* Savings Potential ³ ³ $ ³ $ ³ $ " "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍ" cmds: " =erase =accept < >=next row =print =done " invhlp: " MAXIMO helps minimize stock levels, minimize sku's, eliminate obsolete parts." " Reducing inventory saves interest, warehousing, insurance, etc. In Year 3 " " reduce inventory 20% and save 35% inventory carrying costs to net 7% savings." purchhlp: " MAXIMO helps secure vendors' best prices, minimize emergency order costs, and" " predict expenditures. Savings increase to 15% of maintenance purchases. " " Please enter current annual maintenance purchases. " laborhlp: " MAXIMO matches labor skills to jobs, identifies needed parts and tools, and " " uses PM to reduce emergencies. Only overtime reduction is included here. " " (Regular labor productivity gain is substantial, but difficult to estimate.) " prodnhlp: " MAXIMO reduces unplanned downtime occurrences, minimizes maintenance time, " " coordinates PM and production schedules, and analyzes outage history. Result " " is reduced downtime. Enter annual downtime hours and hourly production cost. " equiphlp: " MAXIMO MAKES PM WORK with equipment condition tracking and prioritization " " and management of repair projects. Equipment life extension is conserva- " " tively estimated to save 1-5%. Enter book value of production equipment. " clock: video m color 8 clearscr set pendxoff 34 set pendyoff 82 set basex 62 ; set basey 40 set delay 20 color 0 ; floor rect 0,@basey-2 639,@basey-6 cload clock3.clp 1 0 0 putup @basex,@basey 1 cfree 1 cload pendulm1.clp 1 1 0 cload pendulm2.clp 2 1 0 cload pendulm3.clp 3 1 0 cload pendulm4.clp 4 1 0 cload pendulm5.clp 5 1 0 mark 4 putup @pendxoff+@basex,@pendyoff+@basey 1 @delay putup @pendxoff+@basex,@pendyoff+@basey 2 @delay putup @pendxoff+@basex,@pendyoff+@basey 3 @delay note 500 10 10 putup @pendxoff+@basex,@pendyoff+@basey 2 @delay putup @pendxoff+@basex,@pendyoff+@basey 1 @delay putup @pendxoff+@basex,@pendyoff+@basey 4 @delay putup @pendxoff+@basex,@pendyoff+@basey 5 @delay note 1000 10 10 putup @pendxoff+@basex,@pendyoff+@basey 4 @delay loop cload roicall.clp 10 1 0 putup 176,70 10 mark 20 putup @pendxoff+@basex,@pendyoff+@basey 1 waitkey 20 pend_1 goto pend_done pend_1: putup @pendxoff+@basex,@pendyoff+@basey 2 waitkey 20 pend_2 goto pend_done pend_2: putup @pendxoff+@basex,@pendyoff+@basey 3 note 500 10 10 putup @pendxoff+@basex,@pendyoff+@basey 2 waitkey 20 pend_3 goto pend_done pend_3: putup @pendxoff+@basex,@pendyoff+@basey 1 waitkey 20 pend_4 goto pend_done pend_4: putup @pendxoff+@basex,@pendyoff+@basey 4 waitkey 20 pend_5 goto pend_done pend_5: putup @pendxoff+@basex,@pendyoff+@basey 5 note 1000 10 10 waitkey 10 pend_6 goto pend_done pend_6: putup @pendxoff+@basex,@pendyoff+@basey 4 waitkey 20 pend_7 goto pend_done pend_7: loop goto pend_ex pend_done: break pend_ex pend_ex: cload roiblank.clp 10 1 1 cfade 24 176,70 10 waitkey 100 putup @pendxoff+@basex,@pendyoff+@basey 1 cfree 1 2 3 4 5 6 7 cload 12oclock.clp 1 0 0 putup @basex+50,@basey+259 1 mark 2 note 137 50 50 note 172 50 50 note 153 50 50 note 230 100 50 waitkey 50 note 230 50 50 note 153 50 50 note 137 50 50 note 172 100 50 waitkey 50 loop if @all==on link master.txt entry_15 else link master.txt entry_14 ; END ROI